<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- proxy的作用：比如vue中的拦截
		预警，上报，扩展功能，统计，增强对象等
		proxy是设计模式的一种，代理模式
		
		语法：
		 new proxy(target,handler)
		 
		 let obj=new peoxy(被代理的对象，代理对象做什么操作)
		 
		 hander:
		 {
			 set() //设置的时候干的事情
			 get() //获取的时候干的事情
			 deleteProperty()
			 has()  //问你有没有这个东西 ‘xxx' in obj
			 apply() //调用函数处理
		 }
		 
		 
		 -->
	<script>
	  var obj={
		  name:'lucky'
	  } 
	
	var proxy=new Proxy(obj,{
		get(target,propkey){
			//console.log(target)
			//console.log(propkey)
			if(propkey in target){
				return target[propkey]
			}else{
				throw new ReferenceError(`你访问的属性${propkey}不存在`)
			}
		}
	})
	
	//console.log(obj.name);
	//console.log(obj.age);
	console.log( proxy.name)
	
	
	try{
		console.log(proxy.age)
	}catch(err){
		console.log(err)
	}
	
	
	
	var  people={
		 score:50
	}
	
	var person=new Proxy(people,{
		set(target,key,val){
			//console.log(target)
			//console.log(key);
			//console.log(val);
			if(key=='score'){
				if(val>100){
					throw new Error('设置的分数超过正常范围，请重新设置')
				}else{
					target[key]=val
				}
			}
		}
	})
	
	   person.score=120
	console.log(people)
	
	</script>	
	</body>
</html>
